package IC.AST;

public abstract class Visitor 
{		
	protected Object VisitSons(ASTNode node)
	{
		for(ASTNode son : node.GetSons())
			son.Visit(this);
		return null;
	}
	
	public Object Visit(ASTNode node) { return null; }  //default
	public Object Visit(Program rootNode) { return null; }
	public Object Visit(BinaryOperationExpression node) { return null; }
	public Object Visit(UnaryOperationExpression node) { return null; }
	public Object Visit(FunctionCallExpression node) { return null; }
	public Object Visit(FunctionCallStatement node) { return null; }
	public Object Visit(DeclorationStatement node) { return null; }
	public Object Visit(VirtualFunctionCall node) { return null; }
	public Object Visit(StaticFunctionCall node) { return null; }
	public Object Visit(NewArrayExpression node) { return null; }
	public Object Visit(NewClassExpression node) { return null; }
	public Object Visit(ContinueStatement node) { return null; }
	public Object Visit(LiteralExpression node) { return null; }
	public Object Visit(ClassDeclaration node) { return null; }
	public Object Visit(LengthExpression node) { return null; }
	public Object Visit(AssignStatement node) { return null; }
	public Object Visit(ReturnStatement node) { return null; }
	public Object Visit(BooleanLiteral node) { return null; }
	public Object Visit(BreakStatement node) { return null; }
	public Object Visit(WhileStatement node) { return null; }
	public Object Visit(ScopeStatement node) { return null; }
	public Object Visit(SimpleLocation node) { return null; }
	public Object Visit(ThisExpression node) { return null; }
	public Object Visit(IntegerLiteral node) { return null; }
	public Object Visit(ArrayLocation node) { return null; }
	public Object Visit(LibraryMethod node) { return null; }
	public Object Visit(QuoteLiteral node) { return null; }
	public Object Visit(IfStatement node) { return null; }
	public Object Visit(NullLiteral node) { return null; }
	public Object Visit(DotLocation node) { return null; }
	public Object Visit(ClassField node) { return null; }
	public Object Visit(ClassType node) { return null; }
	public Object Visit(BasicType node) { return null; }
	public Object Visit(Library node) { return null; }
	public Object Visit(Fields node) { return null; }
	public Object Visit(Formal node) { return null; }
	public Object Visit(Method node) { return null; }
}
